Content filtering, ordering by relevance, and caching

ABSTRACT

There is disclosed a technique for organizing a plurality of content items. In an embodiment, the technique comprises assigning to each content item a content item array or bit string, wherein each unique ordinal or bit position indicates a characteristic of the content item. The content items may be filtered by applying a content filter including at least one filter rule concerning at least one characteristic of each content item. In an embodiment, a user preference bit string is used to indicate a user preference for one or more characteristics of the content items. The user preference bit string may be compared to each content item bit string to determine relevance a content item, and to order the content items according to the user&#39;s preferences. In an embodiment, the content items may be cached using a cache key generated from the user preference bit string.

BACKGROUND OF THE INVENTION

The present invention relates generally to data processing systems, andmore specifically to a technique for organizing content items.

In certain situations, it may be desirable to filter, order byrelevance, and/or cache content items for delivery to a user. As anillustrative example, consider the world wide network of computerscommonly known as the Internet. A hypertext information andcommunication system known as the World Wide Web (“WWW”) operates on theInternet, according to a client-server model using HyperText TransferProtocol (“HTTP”), to make content on a web site on the WWW accessibleto users. The accessible content on the web site may be of manydifferent types including text, graphics, images, sound, and video.

In a given situation, a web developer/administrator may wish to organizesome of the content items available on a web site. This organization mayinvolve, for example, filtering some of the content items for display.In another situation, the web developer/administrator may wish toorganize the content items to reflect a particular user's preferences.In yet another situation, the web developer/administrator may wish tocache frequently accessed content items. Known techniques for organizingcontent items in this manner typically require complex database queries,possibly involving multiple table joins in each case. As will beappreciated, such complex database queries may be costly in terms ofdata processing resources consumed, possibly limiting the flexibility ofa web developer/administrator in organizing the content items asdesired. Thus, a more efficient technique for organizing content itemsis needed.

SUMMARY OF THE INVENTION

There is provided a method, system and computer readable medium fororganizing content items. The organizing may include filtering, orderingby relevance, and/or caching.

In an embodiment, “characteristics” of a “content item” may be defined,with each characteristic being assigned an ordinal in an array (e.g. a“bit position” in a “bit string”) sufficiently long to accommodate thecharacteristics. For example, the characteristics for a news articlecontent item may be a list of related “subject areas”.

A “content filter” may be assembled to filter the characteristics of acontent item by filtering the content item's “content item bit string”.A content filter comprises at least one filter rule concerning one ormore unique bit positions in a content item bit string. A more complexcontent filter may be assembled from a plurality of filter rules usingone or more logical operators (e.g. AND, OR, XOR, NAND, etc.).

The content filter may be compared to a content item bit string todetermine whether there are any matching characteristics. In anembodiment, if at least one characteristic matches, then the contentitem may pass through the content filter and be displayed. In accordancewith the teachings of the present invention, each filter rule in thecontent filter and may be compared to each content item bit stringsimply by performing a bitwise AND operation.

“User preferences” may be stored in a “user preference bit string”, witheach bit position in the user preference bit string corresponding to acharacteristic, such as “subject area”. In an embodiment, a userpreference bit string applies to all users having the samecharacteristic preferences. Each user preference bit string may beconverted to a cache key value for identifying a cache of content items.As an example, a hexadecimal equivalent of the user preference bitstring may be used as a cache key.

A content item bit string and a user preference bit string may becompared to determine whether there are any matching characteristicsbetween the content item and a user's preferences. In accordance withthe teachings of the present invention, the content item bit string anduser preference bit string may be compared simply by performing abitwise AND operation.

The number of matching characteristics in a comparison between the userpreference bit string and the content item bit string may be used tocalculate a “relevance value” for each content item. The calculatedrelevance value may be used to order the content items for deliveryaccording to the user's preferences.

In an aspect of the invention, there is provided a method of organizinga plurality of content items, comprising:

(i) assigning to each content item a content item array, wherein eachordinal of the content item array indicates a characteristic of thecontent item;

(ii) applying a content filter to the plurality of content items, thecontent filter including at least one filter rule concerning at leastone characteristic of each content item.

In an embodiment, the array comprises a bit string, and the ordinalcomprises a unique bit position in the bit string.

In an embodiment, the method further comprises associating a displayarea with the content filter, and facilitating display in the displayarea of any content items that pass through the content filter.

In an embodiment, the content filter is assembled from at least onefilter rule, and multiple filter rules, if present, are combined by alogical operator.

In an embodiment, applying a content filter in (ii) comprises performinga bitwise AND operation between each filter rule of the content filterand each content item bit string.

In an embodiment, the method further comprises, before (i), definingeach possible characteristic of a content item, and assigning to eachpossible characteristic a unique bit position.

In an embodiment, the characteristic comprises whether or not a definedsubject area relates to the content item, and the content item bitstring indicates, at each unique bit position, such a characteristic.

In an embodiment, the method further comprises:

(iii) assigning to each user of the plurality of content items a userpreference bit string, wherein each unique bit position in the userpreference bit string indicates whether the user has a preference for acorresponding characteristic of the content items;

(iv) comparing the user preference bit string to each content item bitstring to determine if any characteristics match.

In an embodiment, the method in (iv) comprises performing a bitwise ANDoperation between each content item bit string and the user preferencebit string.

In an embodiment, the method further comprises:

(v) calculating for each content item a relevance value in dependenceupon the comparing in (iv);

(vi) ordering the content items based, at least in part, on therelevance values calculated in (v).

In an embodiment, the relevance value is calculated by counting thenumber of matching characteristics in the results of the bitwise ANDoperation in (iv).

In an embodiment, the method further comprises facilitating display in adisplay area the content items ordered in (vi).

In an embodiment, the method further comprises:

(vii) caching the content items ordered in (vi) utilizing a cache keygenerated from the user preference bit string.

In another aspect of the invention, there is provided a systemcomprising a processor and computer readable memory, the memory storingcode for organizing a plurality of content items, the code beingconfigured to:

(a) assign to each content item a content item array, wherein eachordinal of the content item array indicates a characteristic of thecontent item;

(b) apply a content filter to the plurality of content items, thecontent filter including at least one filter rule concerning at leastone characteristic of each content item.

In an embodiment, the array comprises a bit string, and the ordinalcomprises a unique bit position in the bit string.

In another aspect of the invention, there is provided a computerreadable medium containing computer executable code for organizing aplurality of content items, the computer executable code comprising:

(a) code for assigning to each content item a content item array,wherein each ordinal of the content item array indicates acharacteristic of the content item;

(b) code for applying a content filter to the plurality of contentitems, the content filter including at least one filter rule concerningat least one characteristic of each content item.

In an embodiment, the array comprises a bit string, and the ordinalcomprises a unique bit position in the bit string.

The foregoing and other aspects of the invention will be apparent fromthe following more particular descriptions of exemplary embodiments ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

In the figures which illustrate exemplary embodiments of the invention:

FIG. 1 is a schematic block diagram of a computer network which mayprovide an operating environment for exemplary embodiments of theinvention.

FIG. 2 is schematic block diagram of an illustrative user system whichmay be found in the computer network of FIG. 1.

FIG. 3 is a schematic block diagram of an illustrative webdeveloper/administrator system which may be found in the computernetwork of FIG. 1.

FIG. 4 is a schematic block diagram of an illustrative web server whichmay be found in the computer network of FIG. 1.

FIG. 5 is a schematic block diagram showing interaction betweenapplications running on the user system, the web developer/administratorsystem and the web server of FIGS. 2-4.

FIG. 6 is a schematic representation of an illustrative listing ofdefined characteristics, such as related subject areas, with eachsubject area being associated with a unique bit position in a bitstring.

FIG. 7 is a schematic representation of an illustrative list of contentitems, each content item being associated with a bit string indicatingto which subject area(s) the content item relates.

FIG. 8 is a schematic representation of an illustrative list of defineduser preference identities (“IDs”), each user preference ID beingdefined by a user preference bit string indicating subject areas are ofinterest.

FIG. 9A is an illustrative example of defined content filters.

FIG. 9B is a schematic representation of an illustrative display ofcontent items filtered according to the content filters defined in FIG.9A.

FIG. 10 is a schematic representation of a comparison between a userpreference bit string and a content item bit string.

FIG. 11 is a schematic representation of an illustrative display ofcontent items reordered based on results of the comparison in FIG. 10.

FIG. 12 is a schematic flow chart of a method in accordance with anembodiment of the invention.

FIG. 13 is a schematic flow chart of a detail in the method of FIG. 12.

FIG. 14 is a schematic flow chart of another detail in the method ofFIG. 12.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

FIG. 1 shows an illustrative computer network 10 which may provide anoperating environment for exemplary embodiments of the invention. A usersystem 100 is connected to the Internet 150. A web server 300 is alsoconnected to the Internet 150 and may be accessed by the user system 100in known manner. A web developer/administrator system 200 is connectedto the web server 300 to develop and administer web content for the webserver 300. It will be appreciated that the computer network 10 of FIG.1 is merely illustrative and is not meant to be limiting in terms of thetype of operating environment suitable for practicing variousembodiments of the invention.

Now referring to FIG. 2, shown in detail is a possible user system 100which may be found in FIG. 1. As shown, the user system 100 may includea central processing unit (“CPU”) 102 connected to a storage unit 104and to a random access memory (“RAM”) 106. The CPU 102 may run anoperating system 103 and execute one or more application programs 123.In the present illustrative example, application program 123 may be aweb browser application program. The operating system 103 andapplication program 123 may be stored in storage unit 104 and loadedinto RAM 106 as required. A user 107 may interact with the user system100 using a video display 108 connected by a video interface 105, andvarious input/output (“I/O”) devices such as a keyboard 110, mouse 112and disk drive 114 connected by an I/O interface 109. The disk drive 114may be configured to accept computer readable media 116. The user system100 is network enabled via a network interface 111. As shown, networkinterface 111 allows the user system 100 to access the Internet 150.

Now referring to FIG. 3, shown in detail is a possible webdeveloper/administrator system 200 which may be found in the computernetwork of FIG. 1. As will be apparent, the web developer/administratorsystem 200 may be substantially similar to the user system 100 of FIG.2, with a CPU 202, storage 204, and RAM 206 to run an operating system203 and an application program 223. The application program 223 may be,for example, a web development/administration program 223. The webdevelopment/administration program 223 may be configured to performvarious tasks, as described in detail further below. A webdeveloper/administrator 207 may interact with the webdeveloper/administrator system 200 using a video display 208 connectedby a video interface 205, and various I/O devices 210, 212, 214connected by an I/O interface 209. The disk drive 214 may be configuredto accept computer readable media 216. The web developer/administratorsystem 200 is network enabled via a network interface 211.

Now referring to FIG. 4, shown in detail is a possible web server 300which may be found in FIG. 1. As shown, the web server 300 has CPU 302,storage 304, and RAM 306 to run an operating system 303 and one or moreapplication programs 323. For example, one application program may be aweb server application program 323 allowing content stored on the webserver 300 to be accessed by a user (e.g. user 107 of FIG. 2). In anembodiment, web server 300 may be connected to the webdeveloper/administrator system 200 via a first network interface 311 a.The web server 300 may also be connected to the Internet 150 via asecond network interface 311 b.

It will be appreciated that each of the user system 100, the webdeveloper/administrator system 200, and web server 300 described aboveare merely illustrative, and not meant to be limiting in terms of thetype of systems that may provide a suitable operating environment forpracticing various embodiments of the invention.

Now referring to FIG. 5, a block diagram schematically shows interactionbetween various applications running on the user system 100, the webdeveloper/administrator system 200, and the web server 300. Morespecifically, the web development/administration program 223 running onthe web developer/administration system 200 interacts with the webserver application program 323 running on the web server 300 to developand administer web content for the web server 300. The web browserapplication program 123 running on the user system 100 interacts withthe web server application program 323 to access web content items onthe web server 300 for user 107.

Now referring to FIG. 6, shown is an illustrative example of a list ofdefined characteristics for a list of content items (e.g. web contentitems available on the web server 200). In this illustrative embodiment,the characteristics may be subject areas related to content items. Thesesubject areas may be defined, for example, by the webdeveloper/administrator 207 using the web development/administrationapplication program 223 on the web developer/administrator system 200 ofFIG. 3. The list of characteristics or subject areas may then be storedon web server 300 together with the content items.

As an illustrative example, in column 610, five subject IDs “SID001” to“SID005” are listed. These subject IDs in column 610 correspond to theillustrative subject areas defined in column 620. In this illustrativeexample, the five subject areas are, respectively, “Hardware”, “DesktopSystems”, “Mobile Systems”, “Software”, and “Internet”.

As shown in column 630, each of these subject areas described in column620 is assigned an ordinal represented by a unique bit position, withina bit array or bit string. (In the present discussion, the term “bitarray” simply denotes a logical array of related bits, such as a bitstring.) For example, SID001 (hardware) is assigned the right most bitposition (00001); SID002 (desktop systems) is assigned the second bitposition from the (right) 00010, and so on.

While five subject areas are shown here for the purposes ofillustration, it will be appreciated that virtually any number ofsubject areas may be assigned a unique bit position in the mannerdescribed, the only practical limitation being the capabilities of theapplication programs and hardware that must process the bit string. Inprototype systems built by the inventors, 256-bit long bit string havebeen used with no difficulty. It is envisioned that much longer bitstrings may be used, subject to the limitations described.

Now referring to FIG. 7, shown is an illustrative example of a list ofcontent items. As described above, these content items may bedeveloped/administered by a web developer/administrator 207 using theweb development/administration application program 223 on the webdeveloper/administrator system 200 of FIG. 3, and stored on the webserver 300 of FIG. 3.

As shown, column 710 includes seven content items “CID001” to “CID007”.Column 720 contains the corresponding descriptions or titles for thecontent items in column 710. For example, CID001 has the description ortitle “New CPU Announcement”, CID002 has the description or title“Internet Software News”, and so on.

As shown in column 730, CID001 (“New CPU Announcement”) is assigned acontent item bit string of 00001. Here, the bit position of the “1”indicates that CID001 is related to subject matter SID001 (i.e.“Hardware”, as defined in the list of subject areas in FIG. 6 is acharacteristic of CID001). Similarly, CID002 (Internet Software News) isassigned a content item bit string of 11000, indicating that CID002 isrelated to both SID004 and SID005 (i.e. “Software” and “Internet”, asdefined in the list of subject areas in FIG. 6) are characteristics ofCID002. As shown, the remainder of the content items, CID003 to CID007,are similarly assigned content item bit strings indicating the subjectarea(s) to which each content item relates.

Now referring to FIG. 8, shown is an illustrative example of a list ofuser preferences for subject areas. In an embodiment, one a userpreference ID corresponds to a pre-selection of preferences by a user(such as user 107 of FIG. 2) to indicate which subject areas are ofinterest to the user.

As shown, column 810 defines user preference IDs “UPID001” to “UPID003”,where each user preference ID may apply to users having the same subjectarea preferences. A “user preference ID” may apply to a single user, ifthat single user is the only user with those user preferences.

As shown, column 820 includes a corresponding list of user preferencebit strings associated with each user preference ID. For example,UPID001 is associated with a user preference bit string of 00011. Thisindicates that a user with UPID001 has expressed an interest in SID001(“Hardware”) and SID002 (“Desktop systems”) as previously defined inFIG. 6. The other user preference IDs are also associated withrespective user preference bit strings, as shown, indicating the subjectarea preferences for various users.

Still referring to FIG. 8, column 830 shows a “hexadecimal”representation of the user preference bit strings in column 820. In anembodiment, these hexadecimal representations of the user preference bitstrings in column 820 may be used as cache keys for caching contentitems (e.g. in the web server 300 of FIG. 4) if advantageous to do so.For example, if a large number of users have the same user preferences(i.e. the users share the same interest areas as described above), itmay be advantageous to cache filtered and ordered content items for suchusers, so as to allow repeated and frequent access. This may avoid thedata processing cost of filtering and ordering content items with eachaccess, and may provide users with faster access times. However, thedata processing cost of filtering and ordering the content with eachaccess should be compared to the cost of caching the content todetermine if there is an overall benefit to caching. It will beappreciated that caching will be most advantageous where a large numberof users have the same user preferences, and access to the cached itemsis very frequent. As the number of subject areas increases, and thelikelihood of a large number of users having the same preferences isreduced, caching may not be suitable.

Now referring to FIGS. 9A and 9B, shown is an illustrative example ofdefined content filters 902A, 904A, and 906A for displaying contentitems in corresponding display areas or portlets 902B, 904B and 906B ofa display 900. Display 900 may appear, for example, on video display 108of the user system 100 of FIG. 2. In this illustrative example, portlet902B is labeled “Hardware News”, portlet 904B is labeled “SoftwareNews”, and portlet 906B is labeled “Internet News”.

As shown in FIG. 9A, content filter 902A is assembled from three filterrules which are OR'ed together: a first filter rule that passes contentitems with a value of “1” in the first bit position from the right intheir respective content item bit strings; a second filter rule thatpasses content items with a value of “1” in the second bit position fromthe right in their respective content item bit strings; and a thirdfilter rule that passes content items with a value of “1” in the thirdbit position from the right in their respective content item bitstrings. In an embodiment, each of these filter rules, in turn, may becompared against a content item bit string by using a bitwise ANDoperation. (In the present context, a bitwise AND operation provides aresult of “1” in a bit position only if there is a “1” in the same bitposition in both of the bit strings being compared.) Content itemspassing content filter 902A are displayed in portlet 902B in display900.

Similarly, content filter 904A includes a single filter rule that passescontent items with a value of “1” in the fourth bit position from theright, in their respective content item bit strings. Again, the filterrule may be compared against a content item by using a bitwise ANDoperation. Content items passing content filter 904A are displayed incorresponding portlet 904B in display 900.

Finally, content filter 906A includes a filter rule that passes contentitems with a value of “1” in the fifth bit position from the right, intheir respective content item bit strings. Again, the filter rule may becompared against a content item by using a bitwise AND operation.Content items passing content filter 906A are displayed in correspondingportlet 906B in display 900.

It will be seen from FIG. 9B that the content items of FIG. 7 have beenfiltered according to the various filter rules in the content filters902A, 904A, 906A, for display in corresponding portlets 902B, 904B,906B. It will also be apparent from the above illustrative examples thatmore complex content filters may be readily assembled by combining oneor more such filter rules using logical operators such as AND, OR, andso on. In prototype testing, the inventors have found that filteringcontent items by application of one or more such filter rules, inaccordance with the teachings of the present invention, is a moreefficient technique for filtering content items in comparison to earlierknown techniques which use complex database queries.

Now referring to FIG. 10, shown in table 1000 is an illustrative exampleof how the content items of FIG. 7 may be organized according to auser's preferences. This organization may be performed, for example, onthe web server 300 of FIG. 4 under control of the webdeveloper/administrator 207.

As shown, column 1010 lists the same content items as previously definedin FIG. 7. Column 1020 lists the content item bit strings associatedwith each of the content item IDs previously defined in FIG. 7. Column1030 lists user preferences for a particular user preference ID (UPID001in this illustrative example). For UPID001, the user preferences aredefined by the bit string 00011. Column 1040 shows the results of abitwise AND operation (as defined above) between the bit strings incolumns 1020 and 1030. As shown, this bitwise AND operation provides aresult of “1” in a bit position only if there is a “1” in the same bitposition in both the content item bit string in column 1020 and userpreference bit string in column 1030. The results of the bitwise ANDoperation for this illustrative example are shown in column 1040.

As shown in column 1050, content item IDs 1 through 7 have a “relevancevalue” of 1, 0, 2, 1, 0, 1, and 0, respectively. As will be apparent,each relevance value is simply a count of the “1” values in the resultsof the bitwise AND operation in column 1040. In an embodiment, theserelevance values in column 1050 may be used to order the content itemsfor display. For example, CID003 (“Desktop Hardware News”) has thehighest relevance value of 2 and, therefore, is deemed to be ofparticular interest to users with UPID001.

In an embodiment, a sorting algorithm may sort the content itemsaccording to “relevance values” (e.g. 1-match list, 2-match list,3-match list, etc.). These lists may be concatenated (best-match,second-best match, third-best match. etc.) to order the content itemsfor display.

As shown in FIG. 11, there are again three display areas or portlets1102, 1104, and 1106. As content item CID003 has the highest relevancevalue for UPID001, as calculated above, CID003 may now be displayed asthe first item in portlet 1102 in FIG. 11. Other content items withlower relevance values may then follow. In an embodiment, content itemsin the same portlet having the same relevance value may be orderedaccording to some other characteristic. For example, content items withthe same relevance value may be ordered by content item ID,alphabetically, by posting date and time of the content item, and so on.

Although not shown in this illustrative example, in an embodiment,content items having a relevance of “0” may be excluded from display.

In the illustrative example shown in FIG. 11, it will be apparent thatthe two display areas “Internet News” and “Software News” have changedorder. This changed ordering may be based, for example, on the relevancevalue calculations described above, and the number of content itemswhich are deemed to be of relevance for a user preference ID (UPID001 inthis illustrative example). It will be readily apparent to those skilledin the art that this is only one of many possible ways in which thecontent items may be filtered and ordered, using the content item bitstrings and user preference bit strings as described above. Furthermore,it will be appreciated that these bit string representations of thecontent item subject areas and user preferences make the calculation ofrelevance very straightforward, as described above.

Now referring to FIG. 12, shown is a simple schematic flow chart of amethod 1200 in accordance with an embodiment of the invention. Method1200 starts and proceeds to block 1202 where a list of possible subjectareas are defined, and each subject area is assigned a unique bitposition in a bit string (as shown by example in FIG. 6). Method 1200then proceeds to block 1204 where a list of content items are assigned acontent item bit string indicating the subject areas to which thecontent item relates (as shown by example in FIG. 7). Method 1200 thenproceeds to block 1206 where a web developer/administrator may apply oneor more filter rules to filter content items to be delivered to a user(as shown by example in FIG. 9A). Method 1200 then proceeds to decisionblock 1207 where method 1200 determines whether the filtered contentitems should be ordered by user preference. If no, method 1200 proceedsto block 1210 where the content items may be displayed according to thecontent filters for each display area (as shown by way of example inFIG. 9B). Method 1200 then ends. If yes, method 1200 proceeds to block1208.

At block 1208, method 1200 performs a calculation to obtain a relevancevalue for each content item for a selected user preference bit string(as shown by example in FIG. 10). Method 1200 then proceeds to block1210 where the relevance values calculated at block 1208 may be used toorder the content items for display to a user (as shown by example inFIG. 11). Method 1200 then ends.

Now referring to FIG. 13, block 1206 of FIG. 12 is shown in more detail.As shown, method 1206 starts and proceeds to block 1206 a where acontent filter is assembled by a web developer/administrator using oneor more filter rules (as shown by example in FIG. 9A). As noted earlier,more complex content filters may be assembled using a plurality offilter rules and appropriate logical operators. Method 1206 thenproceeds to block 1206 b where the content filter(s) is/are applied tofilter content items (as previously described with reference to theexample in FIGS. 9A and 9B). Method 1206 then ends.

Now referring to FIG. 14, block 1208 of FIG. 12 is shown in greaterdetail. More specifically, method 1208 starts and proceeds to block 1208a where relevance values are calculated for each content item inaccordance with a user's preferences (as shown by way of example in FIG.10). Method 1208 then proceeds to block 1208 b where the content itemsare ordered for display according to the rankings calculated in block1208 a (as shown by way of example in FIG. 11).

Although various exemplary embodiments of the invention have beendescribed above, it will be appreciated that variations andmodifications may be made.

For example, method 1200 (FIG. 12) describes filtering content itemsusing content filters, then ordering the filtered content items byrelevance to user preferences. However it will be apparent that theordering of content items by relevance to user preferences may be donefirst, such that the content filters are applied to content items whichhave already been ordered by relevance to a user. However, given a largenumber of content items from which only a few content items will bedisplayed and ordered according to various user preferences, this maynot be a preferred alternative.

As another example, while the illustrative embodiments presented abovediscusses a web based application, it will be appreciated that theteachings of the present invention may be applied to any type ofdatabase system, distributed over a network or centralized, in which anumber of users need to access organized content items.

Also, while the content items in the above illustrative example relateto news articles, it will be appreciated that virtually any type ofcontent including text, graphics, images, sound and video may besimilarly filtered and ordered according to user preferences.

Furthermore, while a single bit array or bit string has been describedin the above example, it will be appreciated that longer bit strings maybe assembled from smaller bit string segments or “chunks”. Thus, forexample, it is possible to use a single bit string of 1024 bits, or anequivalent four bit strings of 256 bits, to define 1024 unique bitpositions for 1024 characteristics. In this example, it will beappreciated that four bit string segments or chunks may be associatedwith each content item or user preference, and processed accordingly.

Also, it will be readily apparent to those skilled in the art that thevalues of “1” and “0” may be readily interchanged as a means ofindicating whether or not a content item relates to a subject area orwhether or not a user has a preference for a subject area.

Therefore, the scope of the invention is defined by the followingclaims.

1-25. (canceled)
 26. A system comprising a processor and computerreadable memory, said memory storing code for organizing a plurality ofcontent items, said code being configured to: (a) assign to each contentitem a content item array, wherein each ordinal of said content itemarray indicates a characteristic of said content item; (b) apply acontent filter to said plurality of content items, said content filterincluding at least one filter rule concerning at least onecharacteristic of each said content item, wherein said array comprises acontent item bit string and said each ordinal comprises a unique bitposition in said content item bit string; (c) assign to each user ofsaid plurality of content items a user preference bit string whereineach unique bit position in said user preference bit string indicateswhether said user has a preference for a corresponding characteristic ofsaid content items; (d) compare said user preference bit string to eachsaid content item bit string to determine if any characteristics match,wherein said comparing in (d) comprises performing a bitwise ANDoperation between each said content item bit string and said userpreference bit string, (e) calculate for each said content item arelevance value in dependence upon said comparing in (d); and (f) orderand store said plurality of content items based, at least in part, onsaid relevance values calculated in (e).
 27. The system of claim 26,wherein, in (e), said relevance value is calculated by counting thenumber of matching characteristics in the results of said bitwise ANDoperation in (d).
 28. The system of claim 26, wherein said code isfurther configured to: (g) cache said plurality of content items orderedin (f) utilizing a cache key generated from said user preference bitstring. 29-42. (canceled)